// import urlConfig from './config.js'

// const request = {}
// const headers = {}
// request.rq = (url, method, data) => {
// 	// console.log(method + "请求：" + urlConfig + url + data);
// 	let target = ""
// 	if (method.toUpperCase() == 'GET') {
// 		target = (urlConfig + url + (data == undefined ? "" : data)).trim()
// 	} else if (method.toUpperCase() == 'POST') {
// 		target = urlConfig + url
// 	}
// 	console.log(target)
// 	return uni.request({
// 		url: target,
// 		sslVerify: false,
// 		method,
// 		data: data,
// 		dataType: 'json',
// 		withCredentials: false,
// 		header: {
// 			"Authorization": uni.getStorageSync('token')
// 		}
// 	}).then(res => {
// 		console.log("返回数据", res[1]);
// 		if (res == undefined) {
// 			throw "返回数据为 undefinded";
// 		}
// 		if (res[1].statusCode == 200) {
// 			return res[1]
// 		} else {
// 			throw res[1].statusCode
// 		}
// 	}).catch(parmas => {
// 		console.log(parmas)
// 		switch (parmas) {
// 			case 401:
// 				uni.reLaunch({
// 					url: '/pages/selectPage/selectPage',
// 					fail: function(res) {
// 						console.log(res)
// 					}
// 				})
// 				uni.clearStorageSync()
// 				break
// 			default:
// 				//console.log("发生异常",parmas);
// 				// return Promise.reject()
// 				break
// 		}
// 	})
// }
// //视频 图片上传
// request.upload = (url, filePath, type) => {
// 	console.log(url, filePath)
// 	console.log(urlConfig + url + `?type=${type}`)
// 	return new Promise((resolve, reject) => {
// 		uni.uploadFile({
// 			url: urlConfig + url + `?type=${type}`,
// 			filePath: filePath,
// 			name: 'file',
// 			header: {
// 				"Authorization": uni.getStorageSync('token')
// 			},
// 			success: (res) => {
// 				resolve(res)
// 			},
// 			fail: (err) => {
// 				resolve(err)
// 			}
// 		})
// 	})
// }
// export default request


import Api from '../api/index.js'
let baseUrl = ''
if (process.env.NODE_ENV === 'development') {
	// 开发环境ss
	baseUrl = "http://192.168.0.106"
} else {
	// 生产环境
	baseUrl = "https://www.auok.ltd"
}
uni.setStorageSync('baseUrl', baseUrl)

let requests = []
let reTokenTimer = null
export function rq(url, method, data) {
	return new Promise((resolve, reject) => {
		uni.request({
			url: handelSkewLine(baseUrl, url),
			method: method,
			header: {
				authorization: uni.getStorageSync('token')
			},
			data: data,
			success: (res) => {
				// console.log(res)
				// if (res.statusCode === 200) {
				// 	console.log(res.data)
				// 	resolve(res.data)
				// }

				if (res.data.code === 401) {
					console.log(res.data)
					requests.push({
						rq,
						method,
						url,
						data
					})
					console.log(requests)
					if (reTokenTimer != null) {
						clearTimeout(reTokenTimer)
					}
					reTokenTimer = setTimeout(() => {
						reToken(resolve)
					}, 500)
				} else {
					// console.log(res.data)
					resolve(res.data)
				}


			},
			fail: err => {
				// console.log(err)
				throw new Error(JSON.stringify(err))
			},
			complete: ok => {
				// uni.hideLoading()
			}
		})
	})
}

function reToken(resolve) {
	Api.refreshToken({
		refreshToken: uni.getStorageSync('reToken')
	}).then(reRes => {
		if (reRes.code === 1) {
			uni.setStorageSync('token', reRes.data.token)
			uni.setStorageSync('reToken', reRes.data.refreshToken)
			requests.forEach(ele => {
				resolve(rq(ele.url, ele.method, ele.data))
			})
			requests = []
		} else {
			uni.showToast({
				title: reRes.msg,
				icon: 'none'
			})
			// 重新去登录
			setTimeout(() => {
				uni.navigateTo({
					url: '/pages/selectPage/selectPage',
					fail: (err) => {
						console.log(err)
					}
				})
			}, 1000)
		}
	})
}


function handelSkewLine(baseUrl, url) {
	if (baseUrl[baseUrl.length - 1] === '/' && url[0] === '/') {
		baseUrl = baseUrl.slice(0, baseUrl.length - 1)
		return baseUrl + url
	}
	if (baseUrl[baseUrl.length - 1] !== '/' && url[0] !== '/') {
		return baseUrl + '/' + url
	}
	return baseUrl + url
}
